/**
 * 	Fichier contenant les différentes règles de reconnaissance des mots du fichier d'entrée.
 *
 *	@file 		draw.y
 *	@author 	Jacquemin Thibault Marleix Mathieu
 *	@version 	0.5
 *
 */
%{
	#include <stdlib.h>
	#include "y.tab.h"
	void yyerror(char *);
%}

/**
 * Régle de match des chiffres flottants et mots contenus dans le fichier à parser.
 */
word [[:alpha:]][[:alnum:]]*
float [0-9]+(\.[0-9]*)?

%x CSL CML

%%
[-=(),;=+*/<>!{}]		{return *yytext;}

"draw"				{yylval.str = strdup(yytext); return DRAW;}
"for"				{return FOR;}
"if"				{return IF;}
"else"				{return ELSE;}
"def"				{return FUNCTION;}

{word}				{yylval.str = strdup(yytext); return WORD;}
{float}				{yylval.f = atof(yytext); return FLOAT;}

"/*" 				{BEGIN CML;}
<CML>"*/" 			{BEGIN INITIAL;}
<CML>"*" 
<CML>[^*\n]* 		{yylval.str = strdup(yytext); return COMMENTARY;}
<CML>\n 

"//"				{ BEGIN CSL; }
<CSL>[^\n]*			{ BEGIN INITIAL; yylval.str = strdup(yytext); return COMMENTARY;}
			

[ \t\n\r]			
.					{yyerror ("Non reconnu");}
%%

int yywrap(void) {return 1;}

